package com.briup.demo.web;

import com.briup.demo.entity.User;
import org.springframework.web.bind.annotation.*;

/*// 在现在前后端分离开发的情况下，后端只需要返回json格式数据给前端，而无需关注视图内容
// 所以在Controller类上都必须标注@Controller和@ResponseBody两个注解
@Controller
// @ResponseBody标注在类上，表示该类中所有的方法都直接以json格式放入到响应体中
@ResponseBody*/
// 在上述情况下，可以使用@RestController注解作为替代；
// 因为@RestController注解 = @Controller + @ResponseBody
@RestController
// @RequestMapping("/users")标注在类上，表示该类中所有的方法都默认处理/users路径下的请求
@RequestMapping("/users")
public class UserController {

    /*
    @RequestMapping注解内部可以通过method属性限制该方法只能接收哪些请求方式，
    如@RequestMapping(value="/userInfo/{id}",method = RequestMethod.GET)
     表示该方法只能接收GET请求，
     如@RequestMapping(value="/userInfo/{id}",method = {RequestMethod.POST,RequestMethod.GET})
     表示该方法只能接收POST和GET请求，
     若不指定method属性，则默认接收所有请求方式。

     @GetMapping("/userInfo/{id}") 等同于
     @RequestMapping(value = "/userInfo/{id}", method = RequestMethod.GET)；
     同理相似的注解还有@PostMapping、@PutMapping、@DeleteMapping等
     */
    // @RequestMapping(value = "/userInfo/{id}", method = RequestMethod.GET)
    @GetMapping("/{id}")
    // @ResponseBody
    public User userInfo(@PathVariable Integer id) {
        return User.builder()
                .id(id)
                .username("张三")
                .password("123456")
                .build();
    }


    @PostMapping
    // @ResponseBody
    public String register(@RequestBody User user) {
        return "注册成功";
    }

}
